package com.edu.d8_lambda;

public class LambdaDemo1 {
    public static void main(String[] args) {
        //学会使用Lambda表达式的标准格式来简化代码
        //lambda表达式只能简化函数式接口
        /**
         * 函数式接口：首先必须是接口，其次，接口内必须只有一个抽象方法
         */
        //正常匿名内部类的书写格式如下：
/*        Swim swim = new Swim() {
            @Override
            public void swim() {
                System.out.println("老师有用贼溜");
            }
        };
        go(swim);*/

       //经lambda表达式简化的匿名内部类如下
        /*Swim swim = ()->{
                System.out.println("老师有用贼溜");
        };
        go(swim);
        */
        //再进一步简化可以
        go(()-> System.out.println("老师有用贼溜"));
    }


    private static void go(Swim s){
        System.out.println("开始");
        s.swim();
        System.out.println("结束");
    }
}

@FunctionalInterface   //函数式接口的标志，必须是接口，并且只能有一个抽象方法，否则会报错
interface Swim{
    void swim();
        }
